iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 1
2
Software Development

從問題理解與活用SQL語法系列 第 1

第一堂:泰D 在鐵人賽的 SQL 課程,上線囉 (家事管理介紹)

  • 分享至 

  • xImage
  •  

大學剛開學的第一個禮拜,最希望教授提早放人!
老經驗:不是加退選後才開學嗎?

本系列適合客群

  1. 喜歡直接藉由範例和情境、練習的引導,將分散的SQL語言的觀念,串聯成一條清楚的脈絡
  2. 理解SQL的語法思維,彈性的活用在不同的關聯式資料庫 (SQL Server,MYSQL,Oracle 等等)
  3. 停滯於觀念和理論的瓶頸,想跨過SQL的初學門檻

本系列不適合客群

  1. 本系列比較少著墨在資料庫理論,較不適合準備資料庫的學業考試
  2. 已在江湖上遊走廝殺的資料庫高手。
  3. 對語法熟悉,但需要加強布林代數、資料庫理論的人

課程進行方式

  1. 範例情境的介紹
  2. 對應範例情境的資料表結構
  3. 了解範例情境底下的問題怎麼使用SQL語法
  4. 範例情境的每個問題可衍生的變化、相關類似的情境練習

模擬課程的進行方式

一、範例情境 (Day2 開始)

泰D家中共有6個家人:「泰熱、泰冷、泰胖、泰瘦、泰賢、泰肝」,每一天晚上,家中要有一個人幫忙家中掃地,一個人幫忙家中拖地、一個人幫忙家中洗碗、一個人幫忙家中倒垃圾、其他兩個人休息。

泰D為了善盡一個出張嘴的家長,他決定寫一個程式,管理家中每天家中成員做家事的狀況。

二、資料表

(一) 家中成員表(Family)

  1. 成員流水號 FamilyId
  2. 姓名 FamilyName
  3. 性別 FamilySex
  4. 出生年月日 BirthDate
  5. 手機號碼 PhoneNumber

以「泰熱」為例

  • FamilyId:d05f90db-e685-4a4c-b2ea-a88756ef236c
  • FamilyName:泰熱
  • FamilySex:男生
  • BirthDate:2001-12-10
  • PhoneNumber:0934567890

(二) 家事排班表(CleanSchedule)

  1. 家事班次流水號 CleanScheduleId
  2. 家事日期與時間 CleanDateTime
  3. 家事負責人流水號 FamilyId (對應家中成員表的FamilyId)
  4. 負責項目 CleanItem

以「泰熱 在 2020 年 10 月 10 日 掃地」為例

  • CleanScheduleId:48f4752c-6418-4cb2-a75d-48f1679d9dfd
  • CleanDateTime: 2020-10-10
  • FamilyId:d05f90db-e685-4a4c-b2ea-a88756ef236
  • CleanItem:0 (0代表掃地、1代表拖地、2代表洗碗、3代表倒垃圾」

(三) 實際做家事紀錄 (CleanRecord)

  1. 實際家事紀錄流水號 CleanRecordId
  2. 家事班次流水號 CleanScheduleId
  3. 家事負責人流水號 FamilyId
  4. 家事開始時間 StartTime
  5. 家事結束時間 EndTime

以「泰熱 在 2020 年 10 月 10 日 從 晚上8:00 ~ 8:30 掃地 」為例

  • CleanRecord:3a507752-d3c5-4aa9-a654-5e25e38a35d1
  • CleanScheduleId:48f4752c-6418-4cb2-a75d-48f1679d9dfd
  • FamilyId:d05f90db-e685-4a4c-b2ea-a88756ef236
  • StartTime: 2020-10-10 20:00
  • EndTime:2020-10-10 20:30

三、課堂初階SQL問題 (Day2 打掃排班表)

  1. 列出所有的家庭成員欄位資料
  2. 列出所有家庭成員的「姓名」、「性別」、「出生年月日」、「手機號碼」
  3. 依照出生年月日,由年紀最大到年紀最小,依序列出所有家庭成員的「姓名」、「出生年月日」

四、課堂進階SQL問題 (Day3 打掃排班表)

  1. 依照出生年月日,依序列出所有家庭成員的「姓名」、「出生年月日」,並用一個欄位顯示該成員「是否已成年(滿18歲)」
  2. 列出所有沒有手機號碼的家庭成員
  3. 泰D為了讓最年長的女生做出最好的示範,請依照性別分類,先依序列出所有年長→年幼的女生成員,接續最年幼的女生成員,列出所有年長→年幼的男生成員,當作後續家事排班的順序依據
  4. 幫泰D列出家中有幾個成年男生

五、綜合練習

  1. 泰D經過思考之後,只希望家中 10 歲以上的男生成員做家事。請列出符合條件的成員

課前準備

方案一、自行準備好資料庫系統軟體

你可以自行準備任何一套資料庫系統

  1. 安裝軟體
  2. 設定具有新增資料、修改資料、刪除資料、查詢資料、建立表格、刪除表格權限的資料庫管理者帳號

方案二、 SQL Fiddle

http://sqlfiddle.com/#!18

為了方便沒有資料庫軟體的人,前期會使用sqlfiddle進行教學
使用方法將於明天介紹

為什麼會想寫這個系列

迷音

可能是因為之前的「入門到放棄」寫著寫著自己都放棄程式語言?

想寫廢文卻沒這麼多時間寫

實際上

我覺得SQL相對主要的程式語言,比較少範例情境式的教學,剛好藉由這次鐵人賽,嘗試自己完成一系列的SQL教學。在後續順便帶到SQL與程式的整合運用

也透過這個教學系列呼應先前「當我遊走在程式的初學路上 - 從入門到放棄」的教、學語言的觀點

我是誰?

一個鼓勵每個人盡早提早發現自己「適合」與「不適合」和程式共處一生的平凡人。


下一篇
第二堂:家事管理 - 認識查詢 (FROM→WHERE→SELECT→ORDER BY)
系列文
從問題理解與活用SQL語法30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
阿展展展
iT邦好手 1 級 ‧ 2019-10-11 03:24:51

太賢...感覺是韓國藝人的名字耶 (X

通靈亡 iT邦高手 1 級 ‧ 2019-10-11 14:20:24 檢舉

泰賢在台灣有一個妹妹,叫做泰填
泰賢昨天在韓國開演唱會,泰填在KTV開包廂

泰諸去泰國玩,泰郝跟太鍵在打架
.
.
.
泰真的很好造詞欸......
/images/emoticon/emoticon12.gif

我要留言

立即登入留言